"""
LeetCode 热题

给定一个未排序的整数数组 nums ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
"""


class Solution(object):
    def longestConsecutive(self, nums):
        """
        找出未排序整数数组中数字连续的最长序列的长度

        参数:
        nums (List[int]): 未排序的整数数组

        返回:
        int: 数字连续的最长序列的长度
        """
        # 如果数组为空，则直接返回0
        if not nums:
            return 0

        # 将数组中的数字存入集合，以消除重复并提高查找效率
        num_set = set(nums)
        longest_streak = 0

        # 遍历集合中的每个数字
        for num in num_set:
            # 只有当 num 是一个序列的起点时才开始计数
            if num - 1 not in num_set:
                current_num = num
                current_streak = 1

                # 检查当前数字的连续性
                while current_num + 1 in num_set:
                    current_num += 1
                    current_streak += 1

                # 更新最长连续序列的长度
                longest_streak = max(longest_streak, current_streak)

        # 返回最长连续序列的长度
        return longest_streak



if __name__ == '__main__':
    pass





if __name__ == '__main__':
    pass
